﻿#pragma once
/**
@author 何炜
@date 2011/5/18
@brief .
@details
*/

#include "GLLLvlObj.h"

namespace GLL
{
	class ObjectSpec : public LvlObj
	{
	protected:
#ifdef GLL_OGRE
		Ogre::SceneNode* _node;
		Ogre::SceneManager* GetSceneManager();
#endif GLL_OGRE
		void DoCreate();
		void DoDestroy();

		virtual void SetPosition(const Position3Df&);
		virtual Position3Df GetPosition();
		virtual void SetScale(const Size3Df&);
		virtual Size3Df GetScale();
		virtual void SetRotation(const Axis3Df&);
		virtual Axis3Df GetRotation();

		ObjectSpec();
		virtual ~ObjectSpec();
		virtual void _PreLoad();
		virtual void _PostUnload();
	};

	class ObjectLight : public ObjectSpec
	{
	public:

	};

	class ObjectMesh : public ObjectSpec
	{
	public:
		enum Property
		{
			OP_ModFile = 1,
			OP_MAX,
		};
		virtual void _DoLoad();
		virtual void _PostLoad();
		virtual void _DoUnload();
		virtual ~ObjectMesh();
		ObjectMesh();

#ifdef GLL_OGRE
		Ogre::Entity* _entity;
#endif GLL_OGRE
	};

	class ObjectParticle : public ObjectSpec
	{
	public:

	};

	class ObjectHelper : public ObjectSpec
	{
	public:

	};


};//GLL
